<?php

class FormPago extends TPage {

    public function onLoad($param) {
        parent::onLoad($param);
        $id = $this->Request["idPago"];
        $idUsuario = $this->Request["idUsuario"];
        $this->setViewState("id",$id);
        $this->setViewState("idUsuario",$idUsuario);

        if (!$this->IsPostBack) {
            $this->actualizarIntefaz();
        }
    }

    private function actualizarIntefaz() {
        $arr = $this->obtenerDatos();
        $this->iniciarControles($arr);
        $this->mostrarMensaje();
    }

    private function obtenerDatos() {
        $id = $this->getViewState("id");
        $oPagoBLL = new PagoBLL();
        $arr = $oPagoBLL->obtenerPorId($id);

        return $arr;
    }

    private function iniciarControles($arr) {
        $id = $this->getViewState("id");
        $idUsuario = $this->getViewState("idUsuario");

        if (count($arr) > 0) {
            $oPago = new Pago();
            $oPago = $arr;

            $intIdUsuario = $oPago->getIdUsuario();
            $strFecha = $oPago->getFechaPago();
            $strMonto = $oPago->getMonto();
            $strDetalle = $oPago->getDetalle();
            $strAQuien = $oPago->getComisionAQuien();
            $strPorcentaje = $oPago->getComisionPorcentaje();
            $strComisionMonto = $oPago->getComisionMonto();
        } else {
            $intIdUsuario = $idUsuario;
            $strFecha = "";
            $strMonto = "";
            $strDetalle = "";
            $strAQuien = "";
            $strPorcentaje = "";
            $strComisionMonto = "";
        }

        //formatea valores
        $strFecha = Util::isDatetimeEmpty($strFecha, "");
        if (!Util::isNullOrEmpty($strFecha)) {
            $strFecha = Util::fechaDateTimeANormal($strFecha);
        }

        $this->ltTitulo->Text = (($id == "-1") ? "Nuevo" : "Modificar") . " Pago";
        $this->ddlUsuarioEscort->asignarSelectedValue($intIdUsuario);
        $this->txtFecha->Text = $strFecha;
        $this->txtMonto->Text = $strMonto;
        $this->txtDetalle->Text = $strDetalle;
        $this->txtAQuien->Text = $strAQuien;
        $this->txtPorcentaje->Text = ($strPorcentaje == "0") ? "": $strPorcentaje;
        $this->txtComisionMonto->Text = ($strComisionMonto == "0") ? "" : $strComisionMonto;
    }

    private function mostrarMensaje() {
        $arg = $this->Request["a"];
        if (!Util::isNullOrEmpty($arg)) {
            $tipoMensaje = Util::desencriptarUrl($arg, "tipoMensaje");
            $mensaje = Util::desencriptarUrl($arg, "mensaje");

            if (!Util::isNullOrEmpty($mensaje)) {
              Util::mostrarMsj($this->Page, "da-ex-val-error", $mensaje, $tipoMensaje);
            }
        }
    }

    private function grabarDatos() {
        try {
          $id = $this->getViewState("id");
          $oPago = new Pago();
          $oPagoBLL = new PagoBLL();

          if ($id != -1) {
              $arr = $oPagoBLL->obtenerPorId($id);
              $oPago = $arr;
          }
          $oPago->setId($id);
          $oPago->setIdUsuario($this->ddlUsuarioEscort->obtenerSelectedValue());
          $oPago->setFechaPago(Util::fechaNormalADateTime($this->txtFecha->Text));
          $oPago->setMonto($this->txtMonto->Text);
          $oPago->setDetalle($this->txtDetalle->Text);
          $oPago->setComisionAQuien($this->txtAQuien->Text);
          $oPago->setComisionPorcentaje($this->txtPorcentaje->Text);
          $oPago->setComisionMonto($this->txtComisionMonto->Text);
          $oPago->setIdEstado(Estado::HABILITADO);

          if ($id == "-1") {
              $resultado = $oPagoBLL->grabar($oPago);
              if (is_numeric($resultado)) {
                  $id = $resultado;
              }
          } else {
              $resultado = $oPagoBLL->editar($oPago);
          }

          if (!Util::isNullOrEmpty($resultado) && !is_numeric($resultado)) {
              $tipoMensaje = Util::MENSAJE_ERROR;
          } else {
              $tipoMensaje = Util::MENSAJE_OK;
          }

        } catch (Exception $e) {
            $tipoMensaje = Util::MENSAJE_ERROR;
        }

        return $tipoMensaje;
    }

    public function btnGrabarClick($sender, $param) {
      try {
          $idUsuario = $this->ddlUsuarioEscort->obtenerSelectedValue();
          $tipoMensaje = $this->grabarDatos();

          if($tipoMensaje == Util::MENSAJE_ERROR){
            $mensaje = "Se produjo un error y no se pudo grabar el registro";
          } else {
            $mensaje = "El registro fue grabado con &eacute;xito";
          }

        } catch (Exception $e) {
          $idUsuario = $this->getViewState("idUsuario");
          $tipoMensaje = Util::MENSAJE_ERROR;
          $mensaje = "Se produjo un error y no se pudo grabar el registro";
        }

        $arg = Util::encriptarUrl(array(
                                        "id" => $idUsuario,
                                        "tipoMensaje" => $tipoMensaje,
                                        "mensaje" => $mensaje
                                       )
                                 );

        $arrOpciones = array(
          "pagina" => "Usuario.AdmRegistroPago",
          "argumento" => $arg
        );
        $opciones = json_encode($arrOpciones);
        Util::registrarJavascript($this->Page,"redireccionarPagina(".$opciones.");");
    }

}
?>
